#include "yolo.h"
#include "Preduce.h"
#include "Gt.h"
using namespace std;
using namespace cv;

int main(void)
{
    string classpath = "../classes.txt"; //分类名称
    string modelpath = "../last.onnx"; //分类模型
    Preduce Pre;


    VideoCapture capture(0);
    // 检查是否成功打开视频
    if (!capture.isOpened())
    {
        cout << "error" << endl;
        return -1;
    }
    Mat input,out,output;
    namedWindow("out",WINDOW_AUTOSIZE);
    namedWindow("in",WINDOW_AUTOSIZE);
    capture.set(CAP_PROP_FRAME_WIDTH,320);
    capture.set(CAP_PROP_FRAME_HEIGHT,320);

    while (1)
    {
        capture.read(input);
        Gt gt;
        gt.st();
        out = Pre.Pre(input); //预处理
        
        
        yolo myolo(out,modelpath,classpath); //模型导入

        output = myolo.run(); //模型预测
        double maxValue;    // 最大值，最小值
        cv::Point  maxIdx;    // 最小值坐标，最大值坐标
        minMaxLoc(output,nullptr,&maxValue,nullptr,&maxIdx);
        putText(out,myolo.classes[maxIdx.x]+" "+to_string(maxValue),Point(0,22),FONT_HERSHEY_SIMPLEX,1,Scalar(0,0,255),1,8);

        gt.et();
        gt.show("used");
        imshow("in",input);
        imshow("out",out);
        
        if (waitKey(30) ==  int('q')){ //按下q退出
            break;
        }
    }
    capture.release(); //释放相机捕获对象
    cv::destroyAllWindows(); //关闭所有窗口
    return 0;
}
